<?php

require_once 'classes/AdoptionProvisoire.php';
require_once 'SCinterface.php';
require_once 'classes/Message.php';

/*
 * Classe de service CRUD pour manipuler les enregistrements d' Adoptions Provisoires
 * @author Zikrija
 * @date 04.05.2012
 */
class SCcontratAdoptionProvisoire {
    
    private $db;

    /**
     *Contructeur créant l'objet pour la connexion à la DB 
     */
    public function __construct() {
        $this->db = new PDO(ACA_DB_DSN, ACA_DB_USER, ACA_DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
        $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    /**
    * Ajoute une Adoption Provisoire
    * @param AdoptionProvisoire Adoption Provisoire à ajouter
    * @return $uneAdoptionProvisoireAAjouter
    */
    public function ajouter($uneAdoptionProvisoireAAjouter) {
        try{

            $query =  $this->db->prepare("INSERT INTO adoptionprovisoire " .
                "(id, dateDebut, dateFin, traitementVeto, remuneration, contrat_id) VALUES(".
                ":id, :dateDebut, :dateFin, :traitementVeto, :remuneration, :contrat_id)");

            $query->execute(array(
                'id'              => $uneAdoptionProvisoireAAjouter->getId() ,
                'dateDebut'       => $uneAdoptionProvisoireAAjouter->getDateDebut(),
                'dateFin'         => $uneAdoptionProvisoireAAjouter->getDateFin() ,
                'traitementVeto'  => $uneAdoptionProvisoireAAjouter->getTraitementVeto() ,
                'remuneration'    => $uneAdoptionProvisoireAAjouter->getRemuneration(),   
                'contrat_id'      => $uneAdoptionProvisoireAAjouter->getContrat_id()    
                ));
            $message = new Message("Adoption provisoire ajoutée");
            $query->closeCursor();
        }
        catch(PDOException $e){
            $message = new Message("Adoption provisoire non ajoutée: ".$e->getMessage());
        }
        return $uneAdoptionProvisoireAAjouter;
   }
    /**
     * Methode permettant de modifier une Adoption provisoire
     * @param AdoptionProvisoire AdoptionProvisoire à modifier
     * @return boolean 
     */
    public function modifier($uneAdoptionProvisoireAModifier){
        try{

            $query =  $this->db->prepare("UPDATE adoptionprovisoire SET ".
                "dateDebut = :dateDebut, dateFin = :dateFin , traitementVeto = :traitementVeto, ".
                "remuneration = :remuneration, contrat_id = :contrat_id ".
                "WHERE id = :id");

            $query->execute(array(
                'id'              => $uneAdoptionProvisoireAModifier->getId() ,
                'dateDebut'       => $uneAdoptionProvisoireAModifier->getDateDebut(),
                'dateFin'         => $uneAdoptionProvisoireAModifier->getDateFin() ,
                'traitementVeto'  => $uneAdoptionProvisoireAModifier->getTraitementVeto() ,
                'remuneration'    => $uneAdoptionProvisoireAModifier->getRemuneration(),   
                'contrat_id'      => $uneAdoptionProvisoireAModifier->getContrat_id()
            ));

            $query->closeCursor();

            $message = new Message("Adoption provisoire modifiée");

        }
        catch(PDOException $e){
            $message = new Message("Adoption provisoire non modifiée: ".$e->getMessage());
        }
        return $message;
    }
    /**
     * Methode permettant de supprimer une adoption provisoire
     * @param int id de l' adoption provisoire à supprimer
     * @return boolean 
     */
    public function supprimer($idAdoptionProvisoireASupprimer){
        try{
            $query = $this->db->prepare("DELETE FROM adoptionprovisoire WHERE id = :id");
            $query->execute(array(
                'id'           => $idAdoptionProvisoireASupprimer
            ));            
            $query->closeCursor();
            
            $message = new Message("Adoption provisoire supprimée"); 
        }
        catch(PDOException $e){
            $message = new Message("Adoption provisoire non supprimée: ". $e->getMessage());
        }
        return $message;
    }
   
    /**
     * 
     * @param AdoptionProvisoire de recherche sous forme d'objet AdoptionProvisoire
     * @return un tableau d'objet AdoptionProvisoire
     */
    public function lister($adoptionProvisoireALister){
        try{
            $sql="SELECT * FROM adoptionprovisoire ";
            $sql_Where="WHERE";
            if($adoptionProvisoireALister!=NULL)
            {
                if($adoptionProvisoireALister->getId()!=NULL)
                    $sql_Where.=" id = '".$adoptionProvisoireALister->getId()."' AND ";
                if($adoptionProvisoireALister->getDateDebut()!=NULL)
                    $sql_Where.=" dateDebut = '".$adoptionProvisoireALister->getDateDebut()."' AND ";
                if($adoptionProvisoireALister->getDateFin()!=NULL)
                    $sql_Where.=" dateFin = '".$adoptionProvisoireALister->getDateFin()."' AND ";
                if($adoptionProvisoireALister->gettraitementVeto()!=NULL)
                    $sql_Where.=" traitementVeto = '".$adoptionProvisoireALister->getTraitementVeto()."' AND ";
                if($adoptionProvisoireALister->getremuneration()!=NULL)
                    $sql_Where.=" remuneration = '".$adoptionProvisoireALister->getRemuneration()."' AND ";
                if($adoptionProvisoireALister->getContrat_id()!=NULL)
                    $sql_Where.=" contrat_id = '".$adoptionProvisoireALister->getContrat_id()."' AND ";
            }         

            $sql_Where = substr($sql_Where,0,-5);
            $sql.=$sql_Where." ORDER BY id";
            $lesAdoptionProvisoiresTrouvees=NULL;
            $uneAdoptionProvisoireLue=NULL;
            $result=$this->db->query($sql);
            while($row = $result->fetch())
            {   
                $uneAdoptionProvisoireLue = new AdoptionProvisoire($row['id'], $row['dateDebut'], $row['dateFin'], $row['traitementVeto'], $row['remuneration'], $row['contrat_id']);

                $lesAdoptionProvisoiresTrouvees[]=$uneAdoptionProvisoireLue;
            }                
        }
        catch(PDOException $e)
        {
            print($e->getMessage());
            $lesAdoptionProvisoiresTrouvees=NULL;
        }
        return $lesAdoptionProvisoiresTrouvees;
    } 
}

?>
